package cn.sycoder.utils;

import cn.sycoder.vo.MenuVo;
import cn.sycoder.vo.RoleMenuVo;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.List;

public class MenusUtil {

    /**
     * 根据menuId 找属于该菜单id的子菜单
     *
     * @param menuId
     * @param allMenus
     * @return
     */
    public static List<MenuVo> getChild(Long menuId, List<MenuVo> allMenus) {

        // 找最靠近子菜单的子菜单数据
        List<MenuVo> childMenus = new ArrayList<>();
        for (MenuVo allMenu : allMenus) {
            if (allMenu.getPid() == menuId) {
                childMenus.add(allMenu);
            }
        }

        if (childMenus.size() == 0) {
            return childMenus;
        }

        // 查找子菜单中是否还有子菜单
        for (MenuVo childMenu : childMenus) {
            if (StringUtils.isEmpty(childMenu.getUrl())) {
                // 递归
                childMenu.setMenus(getChild(childMenu.getId(), allMenus));
            }
        }
        return childMenus;
    }


    /*public static List<RoleMenuVo> getChild2(Long menuId, List<RoleMenuVo> allMenus) {

        // 找最靠近子菜单的子菜单数据
        List<RoleMenuVo> childMenus = new ArrayList<>();
        for (RoleMenuVo allMenu : allMenus) {
            if (allMenu.getPid() == menuId) {
                childMenus.add(allMenu);
            }
        }

        if (childMenus.size() == 0) {
            return childMenus;
        }

        // 查找子菜单中是否还有子菜单
        for (RoleMenuVo childMenu : childMenus) {
            if (StringUtils.isEmpty(childMenu.getUrl())) {
                // 递归
                childMenu.setMenus(getChild2(childMenu.getId(), allMenus));
            }
        }
        return childMenus;
    }*/
}
